Use the Spectrum 128 style menu below to navigate to the various sections detailing the keypad.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Communication Details |
![]() |
![]() |
The Spectrum 128 controls communications to the KEYPAD socket (and also the RS232 socket) via the I/O register 14 of the AY-3-8912 programmable sound generator. The other I/O registers are all used exclusively for sound generation. Register 14 is selected by writing the value 14 to I/O port FFFDh (65533), and once selected the 8 bits that make up the register can be written to via I/O port BFFDh (49149) and read from via port FFFDh (65533). The 8 bits of register 14 control the following functions:
BIT | SOCKET | PIN | FUNCTION |
0 | Keypad | 2 | Output |
1 | Keypad | 4 | Output |
2 | RS232 | 5 | CTS Out |
3 | RS232 | 3 | RXD Out |
4 | Keypad | 3 | Input |
5 | Keypad | 5 | Input |
6 | RS232 | 4 | DTR In |
7 | RS232 | 2 | TXD In |
Both the KEYPAD and RS232/MIDI sockets are driven by MC1488 and MC1489 RS232 driver and receiver ICs, and hence a logic 1 is represented by a voltage between -15V to -3V and a logic 0 by +3V to +15V. They are 6-way pluggable cord connector (PCC) right-handed sockets (BT Type No. 603W).
The KEYPAD socket consists of six connections with pin 6 being on the side with the clip mechanism. Note that communications to the keypad only utilises pins 1, 2, 5 and 6. The colours of the wires in the keypad lead connecting to the socket pins are listed below:
![]() |
|
||||||||||||||||||||||
FRONT VIEW OF SOCKET |
The connector that is fitted to the end of the keypad cable is called a 6-way pluggable cord connector (PCC) right-handed handset plug (BT Type No. 631W).
The KEYPAD socket's input and output lines can be controlled and monitored from BASIC. The following program reads the two input lines:
10OUT
65533,14
20PRINT AT
0,0;IN
65533;" "
30GO TO
20
The program is best run in 48K mode so that the keypad is not read via the new ROM routines.
The program will display 255 by default when there is nothing connected to the KEYPAD and RS232 sockets or when input line bit 5 and / or bit 4 of the KEYPAD socket is connected to 0V. When the input line bit 5 is connected to +12V the display shows 223 (11011111b, DFh), and when the input line bit 4 is connected to +12V the display shows 239 (11101111b, EFh). When both bits 4 and 5 are connected to +12V the display shows 207 (11001111b, CFh). These figures are summarised below:
BIT 5 | BIT 4 | DEC | BINARY | HEX |
n/c | n/c | 255 | 11111111 | FF |
0V | 0V | 255 | 11111111 | FF |
0V | +12V | 239 | 11101111 | EF |
+12V | 0V | 223 | 11011111 | DF |
+12V | +12V | 207 | 11001111 | CF |
The input lines of the RS232 socket can be tested in a similar fashion.
The keypad communicates to the Spectrum 128 by setting output line bit 5 to either +5V or 0V. These levels will be read by the Spectrum 128 as logic 0 and logic 1 respectively. Thus if the keypad 'wants' the Spectrum 128 to read in a 0 it must send out a 1 and vice versa. This inversion is caused by there not being a TTL to RS232 conversion at the keypad end of the communications line. As a result, the keypad software must take this into account by inverting all input and output signals appropriately.
In a similar manner to the previous program, the following will write out to the two output lines and will rapidly sequence through:
- Output line bits 0 and 1 to logic 0 (i.e. +12V)
- Output line bit 0 to logic 1 and bit 1 to logic 0 (i.e. +12V and -12V)
- Output line bit 0 to logic 0 and bit 1 to logic 1 (i.e. -12V and +12V)
- Output line bits 0 and 1 to logic 1 (i.e. -12V)
10OUT
65533,14
20OUT
49149,0
30OUT
49149,1
40OUT
49149,2
50OUT
49149,3
60GO TO
20
The program is again best run in 48K mode so that the keypad is not read via the new ROM routines as this would affect the state of the output lines of the RS232 socket. Similar BASIC code can also be used to control the two output lines of the RS232 socket.